package cc.rengu.igas.channel.upgw.facade;

import cc.rengu.igas.channel.upgw.facade.request.*;
import cc.rengu.igas.channel.upgw.facade.response.*;
import cc.rengu.igas.channel.upgw.facade.result.Result;

/**
 * @author wukefan
 * @version 1.0.0
 * @date 2020/9/25 21:45
 * 银联网关支付服务接口
 */
public interface UpgwPayService {

    /**
     * 银联网关支付-个人网关支付
     *
     * @param upgwPersonalGatewayPaymentRequest
     * @return Result<UpgwPersonalGatewayPaymentResponse>
     */
    Result<UpgwPersonalGatewayPaymentResponse> upgwPersonalGatewayPayment(UpgwPersonalGatewayPaymentRequest upgwPersonalGatewayPaymentRequest);

    /**
     * 银联网关支付-企业网关支付
     *
     * @param upgwEnterpriseGatewayPaymentRequest
     * @return Result<UpgwEnterpriseGatewayPaymentResponse>
     */
    Result<UpgwEnterpriseGatewayPaymentResponse> upgwEnterpriseGatewayPayment(UpgwEnterpriseGatewayPaymentRequest upgwEnterpriseGatewayPaymentRequest);

    /**
     * 银联网关支付-个人支付退款
     *
     * @param upgwPersonalGatewayFullPaymentRefundRequest
     * @return
     */
    Result<UpgwPersonalGatewayFullPaymentRefundResponse> upgwPersonalGatewayFullPaymentRefund(UpgwPersonalGatewayFullPaymentRefundRequest upgwPersonalGatewayFullPaymentRefundRequest);

    /**
     * 银联网关支付-企业支付退款
     *
     * @param upgwEnterpriseGatewayFullPaymentRefundRequest
     * @return
     */
    Result<UpgwEnterpriseGatewayFullPaymentRefundResponse> upgwEnterpriseGatewayFullPaymentRefund(UpgwEnterpriseGatewayFullPaymentRefundRequest upgwEnterpriseGatewayFullPaymentRefundRequest);

    /**
     * 银联网关支付-个人网关交易状态查询
     *
     * @param upgwPersonalGatewayTransStateQueryRequest
     * @return
     */
    Result<UpgwPersonalGatewayTransStateQueryResponse> upgwPersonalGatewayTransStateQuery(UpgwPersonalGatewayTransStateQueryRequest upgwPersonalGatewayTransStateQueryRequest);

    /**
     * 银联网关支付-企业网关交易状态查询
     *
     * @param upgwEnterpriseGatewayTransStateQueryRequest
     * @return
     */
    Result<UpgwEnterpriseGatewayTransStateQueryResponse> upgwEnterpriseGatewayTransStateQuery(UpgwEnterpriseGatewayTransStateQueryRequest upgwEnterpriseGatewayTransStateQueryRequest);

}
